////////////////////////////////////////////////////////////////////////////////

#ifndef _SERVERSTATE_H_
#define _SERVERSTATE_H_

////////////////////////////////////////////////////////////////////////////////

#ifndef _PLAYER_H_
#include "player.h"
#endif

#ifndef _BULLET_H_
#include "bullet.h"
#endif

#ifndef _WALL_H_
#include "wall.h"
#endif

#ifndef _BUFFER_H_
#include "buffer.h"
#endif


////////////////////////////////////////////////////////////////////////////////


/** This class represents server state
*
*
*  @author   Roman Pasechnik
*  @author   Anastasia Karpinska
*  @since    Nov 11th, 2009
*  @updated  Nov 21th, 2009
*/
class ServerState
{
////////////////////////////////////////////////////////////////////////////////

public:

////////////////////////////////////////////////////////////////////////////////


    /** Constructor */
    ServerState( const PlayersList& _players,
                 const BulletsList& _bullets,
                 const WallsList& _walls );


    /** Constructor from buffer */
    ServerState( const Buffer& _buffer );


    /** Destructor */
    virtual ~ServerState();


////////////////////////////////////////////////////////////////////////////////


    /** Get players */
    const PlayersList& GetPlayers() const;


    /** Get bullets */
    const BulletsList& GetBullets() const;


    /** Get walls */
    const WallsList& GetWalls() const;


////////////////////////////////////////////////////////////////////////////////

private:

////////////////////////////////////////////////////////////////////////////////


    /** Players */
    PlayersList m_Players;


    /** Bullets */
    BulletsList m_Bullets;


    /** Walls */
    WallsList m_Walls;


////////////////////////////////////////////////////////////////////////////////
};


////////////////////////////////////////////////////////////////////////////////

#endif

////////////////////////////////////////////////////////////////////////////////

